package com.yitiao.designmodel.behave.state;

/**
 * 状态模式是一种行为型设计模式，它<b>允许对象在内部状态改变时改变它的行为</b>。
 * 在这个示例中，状态接口定义了一个handle()方法，具体状态类实现了这个方法并定义了不同的状态，
 * 环境类持有一个状态对象并在请求时调用状态对象的handle()方法。
 * 在测试类中，我们创建了一个Context对象，设置了不同的状态并调用了request()方法，输出了不同的状态信息。
 */
public class MainTest {
    public static void main(String[] args) {
        Context context = new Context();
        context.setState(new ConcreteStateA());
        context.request();
        // 状态类之间的转换需要满足一定的条件，否则可能会导致程序出错。
        context.setState(new ConcreteStateB());
        context.request();
    }
}
